#include"func.h"
int main(int argc,char* argv[]){
    // ./nobuffer file1
    ARGS_CHECK(argc,2);
    //用或来表示既要又要的情况，因为不同类型的属性，用不同的比特位记录
    //所以在使用时，只需要进行或运算，就可以达到两种不同的需求，所以这个是
   // int fd = open(argv[1],O_RDONLY|O_CREAT,0666);
    int fd = open(argv[1],O_RDWR|O_CREAT,0666);
    printf("%d\n",fd);
    char buff[1024]={0};
    //留一个位置给字符串结束符\0
    ssize_t red =  read(fd,buff,sizeof(buff)-1);
    printf("no memset bufff content = %s\n",buff);
    //读取之前应该将缓冲buff中的内容清空，避免上一次读的脏数据还留在缓冲中
    //memset的第二个参数是表示将清空的值填充为什么内容，所以一般就是0
    memset(buff,0,sizeof(buff));
    ERROR_CHECK(red,-1,"read");
    printf("success num read = %ld\n",red);
    printf("the buff content = %s\n",buff);
    //存储写入的数i据
    char r[100] = "what fuck!\n";
    //这里会失败，因为在打开文件时，不是可写的方式打开，所以要修改open的参数
    //那这个写入是追加还是清空呢？是追加，将对应的内容追加到文件中
    int writenum = write(fd,r,100);
    ERROR_CHECK(writenum,-1,"write");
    printf("write num=%d\n",writenum);
    close(fd);
    return 0;
}
